<<<<<<< .mine
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>prngd: MyThreadClass Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">prngd
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_my_thread_class.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="class_my_thread_class-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">MyThreadClass Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Implements Thread-handling for two threads within an object.  
 <a href="class_my_thread_class.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_my_thread_class_8h_source.html">MyThreadClass.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for MyThreadClass:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class__inherit__graph.png" border="0" usemap="#_my_thread_class_inherit__map" alt="Inheritance graph"/></div>
<map name="_my_thread_class_inherit__map" id="_my_thread_class_inherit__map">
<area shape="rect" id="node2" href="class_m_q___server.html" title="Implements a message&#45;queue&#45;server for prngd. " alt="" coords="5,80,92,107"/><area shape="rect" id="node3" href="class_tcp___server.html" title="Implement a tcp&#45;server for prngd. " alt="" coords="116,80,203,107"/><area shape="rect" id="node4" href="class_udp___server.html" title="Implements a udp&#45;server for prngd. " alt="" coords="227,80,315,107"/><area shape="rect" id="node5" href="class_uds___server.html" title="Implements a Unix&#45;domain&#45;socket server for prngd. " alt="" coords="339,80,427,107"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a08ff85b3d928e0b953b3aee40b4dc9ed"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a08ff85b3d928e0b953b3aee40b4dc9ed">MyThreadClass</a> ()</td></tr>
<tr class="separator:a08ff85b3d928e0b953b3aee40b4dc9ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04fba1006d1a3606208997d539214f8f"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a04fba1006d1a3606208997d539214f8f">~MyThreadClass</a> ()</td></tr>
<tr class="separator:a04fba1006d1a3606208997d539214f8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a61698b55e4b49c3050854bb10ec8ba"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a5a61698b55e4b49c3050854bb10ec8ba">StartWorkerThread</a> ()</td></tr>
<tr class="separator:a5a61698b55e4b49c3050854bb10ec8ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d7edfe08ebb05f0ed293d4623f5b544"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a0d7edfe08ebb05f0ed293d4623f5b544">StartListenerThread</a> (pthread_t parent_th)</td></tr>
<tr class="separator:a0d7edfe08ebb05f0ed293d4623f5b544"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a649497005488e50141baa26434719e69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a649497005488e50141baa26434719e69">WaitForWorkerThreadToExit</a> ()</td></tr>
<tr class="separator:a649497005488e50141baa26434719e69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f39e3150017a1e203654cb6ebbd94fa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a2f39e3150017a1e203654cb6ebbd94fa">WaitForListenerThreadToExit</a> ()</td></tr>
<tr class="separator:a2f39e3150017a1e203654cb6ebbd94fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a4a44c151b5c74a673e8b1d215d876150"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work</a> ()=0</td></tr>
<tr class="separator:a4a44c151b5c74a673e8b1d215d876150"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a569aeac837f34ab7131ee6a62aaa69cb"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a569aeac837f34ab7131ee6a62aaa69cb">thread_listen</a> (pthread_t)=0</td></tr>
<tr class="separator:a569aeac837f34ab7131ee6a62aaa69cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:a7909fe494afbfe99b385dc5bccbfb5ba"><td class="memItemLeft" align="right" valign="top">static void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a7909fe494afbfe99b385dc5bccbfb5ba">thread_workEntryFunc</a> (void *This)</td></tr>
<tr class="separator:a7909fe494afbfe99b385dc5bccbfb5ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dcc6b326ea7768693ed99f884195018"><td class="memItemLeft" align="right" valign="top">static void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a6dcc6b326ea7768693ed99f884195018">thread_listenerEntryFunc</a> (void *This)</td></tr>
<tr class="separator:a6dcc6b326ea7768693ed99f884195018"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:abdf52ce85e803bc3f12767a812e4a9b0"><td class="memItemLeft" align="right" valign="top">pthread_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#abdf52ce85e803bc3f12767a812e4a9b0">_worker</a></td></tr>
<tr class="separator:abdf52ce85e803bc3f12767a812e4a9b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16cebe6e7c1afd0e766a166136e6d909"><td class="memItemLeft" align="right" valign="top">pthread_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a16cebe6e7c1afd0e766a166136e6d909">_listener</a></td></tr>
<tr class="separator:a16cebe6e7c1afd0e766a166136e6d909"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implements Thread-handling for two threads within an object. </p>
<p><a class="el" href="class_my_thread_class.html" title="Implements Thread-handling for two threads within an object. ">MyThreadClass</a> defines two methods <a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work()</a> and thread_listen(prthread_t) which have to be implemented by classes who inherit from <a class="el" href="class_my_thread_class.html" title="Implements Thread-handling for two threads within an object. ">MyThreadClass</a>. The class got two internal variables for two threads. The class is intended to work like this:</p><ul>
<li><a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work()</a> have to do all the connection setup and executing commands if something is received from a client, the function will run in thread _worker.</li>
<li>thread_lisen() got a endless loop, where it waits for receiving data from a client, the cuntion will run in thread _listener.</li>
<li>If thread_listen receives some data (within the thread _listener) it will signal the thread _worker.</li>
<li>The thread _worker will check the signal within the function thread_worker() and do some computation or whatever.</li>
<li>As long as the worker is busy, the listener can receive commands, but they will not be executed.</li>
<li>After finishing a computation, the worker will get ready again and can handler further commands from the listener. </li>
</ul>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a08ff85b3d928e0b953b3aee40b4dc9ed"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">MyThreadClass::MyThreadClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Constructor </p>

</div>
</div>
<a class="anchor" id="a04fba1006d1a3606208997d539214f8f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual MyThreadClass::~MyThreadClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Destructor </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a0d7edfe08ebb05f0ed293d4623f5b544"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int MyThreadClass::StartListenerThread </td>
          <td>(</td>
          <td class="paramtype">pthread_t&#160;</td>
          <td class="paramname"><em>parent_th</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Starts the listen thread, which start executing the <a class="el" href="class_my_thread_class.html#a569aeac837f34ab7131ee6a62aaa69cb">thread_listen()</a> function. </p><dl class="section return"><dt>Returns</dt><dd>True if the thread was successfully started, false if there was an error starting the thread. </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph.png" border="0" usemap="#class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph" alt=""/></div>
<map name="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph" id="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a6dcc6b326ea7768693ed99f884195018" title="MyThreadClass::thread\l_listenerEntryFunc" alt="" coords="248,5,404,47"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph.png" border="0" usemap="#class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph" alt=""/></div>
<map name="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph" id="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph">
<area shape="rect" id="node2" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe" title="MQ_Server::thread_work" alt="" coords="249,5,413,32"/><area shape="rect" id="node3" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470" title="Tcp_Server::thread_work" alt="" coords="249,56,413,83"/><area shape="rect" id="node4" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d" title="Udp_Server::thread_work" alt="" coords="248,107,415,133"/><area shape="rect" id="node5" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d" title="Uds_Server::thread_work" alt="" coords="248,157,415,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a5a61698b55e4b49c3050854bb10ec8ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int MyThreadClass::StartWorkerThread </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Starts the worker thread, which start executing the <a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work()</a> function. </p><dl class="section return"><dt>Returns</dt><dd>True if the thread was successfully started, false if there was an error starting the thread. </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph.png" border="0" usemap="#class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph" alt=""/></div>
<map name="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph" id="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a7909fe494afbfe99b385dc5bccbfb5ba" title="MyThreadClass::thread\l_workEntryFunc" alt="" coords="244,5,400,47"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph.png" border="0" usemap="#class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph" alt=""/></div>
<map name="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph" id="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph">
<area shape="rect" id="node2" href="class_m_q___server.html#a971bda7614a1744103430c003b416b92" title="MQ_Server::MQ_Server" alt="" coords="246,5,405,32"/><area shape="rect" id="node3" href="class_tcp___server.html#ad8fb0128c69d6f3597f86b82bcdcfb7a" title="Tcp_Server::Tcp_Server" alt="" coords="246,56,405,83"/><area shape="rect" id="node4" href="class_udp___server.html#acc9a3e4831a50e3148b117605e00e0db" title="Udp_Server::Udp_Server" alt="" coords="244,107,407,133"/><area shape="rect" id="node5" href="class_uds___server.html#ae3e4d6758dbf5f58f1b67854131dad97" title="Uds_Server::Uds_Server" alt="" coords="244,157,407,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a569aeac837f34ab7131ee6a62aaa69cb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void MyThreadClass::thread_listen </td>
          <td>(</td>
          <td class="paramtype">pthread_t&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This method has to be responsible for listening to incomming data and signaling the worker. </p>

<p>Implemented in <a class="el" href="class_udp___server.html#a4453086a39202385dd56993916e116ca">Udp_Server</a>, <a class="el" href="class_uds___server.html#ac6b140f928c069ab4f50980fe1027f0b">Uds_Server</a>, <a class="el" href="class_tcp___server.html#ab143c623a5dcda41b308c443b81f74dd">Tcp_Server</a>, and <a class="el" href="class_m_q___server.html#a7ae00df3af2308b7751b2de33992560b">MQ_Server</a>.</p>

</div>
</div>
<a class="anchor" id="a6dcc6b326ea7768693ed99f884195018"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void* MyThreadClass::thread_listenerEntryFunc </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>This</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Creates a new listener thread and starts executin thread_listen within it. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph.png" border="0" usemap="#class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph" alt=""/></div>
<map name="class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph" id="class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a0d7edfe08ebb05f0ed293d4623f5b544" title="MyThreadClass::StartListener\lThread" alt="" coords="209,74,404,115"/><area shape="rect" id="node3" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe" title="MQ_Server::thread_work" alt="" coords="453,5,617,32"/><area shape="rect" id="node4" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470" title="Tcp_Server::thread_work" alt="" coords="453,56,617,83"/><area shape="rect" id="node5" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d" title="Udp_Server::thread_work" alt="" coords="452,107,619,133"/><area shape="rect" id="node6" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d" title="Uds_Server::thread_work" alt="" coords="452,157,619,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a4a44c151b5c74a673e8b1d215d876150"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void MyThreadClass::thread_work </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This method has to be responsible for the connection setup and execution tasks like prngd computation. </p>

<p>Implemented in <a class="el" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d">Udp_Server</a>, <a class="el" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d">Uds_Server</a>, <a class="el" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470">Tcp_Server</a>, and <a class="el" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe">MQ_Server</a>.</p>

</div>
</div>
<a class="anchor" id="a7909fe494afbfe99b385dc5bccbfb5ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void* MyThreadClass::thread_workEntryFunc </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>This</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Creates a new worker thread and starts executing thread_work within it. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph.png" border="0" usemap="#class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph" alt=""/></div>
<map name="class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph" id="class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a5a61698b55e4b49c3050854bb10ec8ba" title="MyThreadClass::StartWorker\lThread" alt="" coords="209,74,400,115"/><area shape="rect" id="node3" href="class_m_q___server.html#a971bda7614a1744103430c003b416b92" title="MQ_Server::MQ_Server" alt="" coords="450,5,609,32"/><area shape="rect" id="node4" href="class_tcp___server.html#ad8fb0128c69d6f3597f86b82bcdcfb7a" title="Tcp_Server::Tcp_Server" alt="" coords="450,56,609,83"/><area shape="rect" id="node5" href="class_udp___server.html#acc9a3e4831a50e3148b117605e00e0db" title="Udp_Server::Udp_Server" alt="" coords="448,107,611,133"/><area shape="rect" id="node6" href="class_uds___server.html#ae3e4d6758dbf5f58f1b67854131dad97" title="Uds_Server::Uds_Server" alt="" coords="448,157,611,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a2f39e3150017a1e203654cb6ebbd94fa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MyThreadClass::WaitForListenerThreadToExit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Will not return until the internal listener thread has exited. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph.png" border="0" usemap="#class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph" alt=""/></div>
<map name="class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph" id="class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph">
<area shape="rect" id="node2" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe" title="MQ_Server::thread_work" alt="" coords="267,5,431,32"/><area shape="rect" id="node3" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470" title="Tcp_Server::thread_work" alt="" coords="267,56,431,83"/><area shape="rect" id="node4" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d" title="Udp_Server::thread_work" alt="" coords="265,107,432,133"/><area shape="rect" id="node5" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d" title="Uds_Server::thread_work" alt="" coords="265,157,432,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a649497005488e50141baa26434719e69"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MyThreadClass::WaitForWorkerThreadToExit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Will not return until the internal worker thread has exited. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a16cebe6e7c1afd0e766a166136e6d909"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">pthread_t MyThreadClass::_listener</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>ID of the internal listener thread. </p>

</div>
</div>
<a class="anchor" id="abdf52ce85e803bc3f12767a812e4a9b0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">pthread_t MyThreadClass::_worker</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Id of the internal worker thread. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>H:/prngd_server/inc/<a class="el" href="_my_thread_class_8h_source.html">MyThreadClass.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="class_my_thread_class.html">MyThreadClass</a></li>
    <li class="footer">Generated on Fri Aug 29 2014 14:14:52 for prngd by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.8 </li>
  </ul>
</div>
</body>
</html>
=======
<<<<<<< .mine
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>prngd: MyThreadClass Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">prngd
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_my_thread_class.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="class_my_thread_class-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">MyThreadClass Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Implements Thread-handling for two threads within an object.  
 <a href="class_my_thread_class.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_my_thread_class_8h_source.html">MyThreadClass.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for MyThreadClass:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class__inherit__graph.png" border="0" usemap="#_my_thread_class_inherit__map" alt="Inheritance graph"/></div>
<map name="_my_thread_class_inherit__map" id="_my_thread_class_inherit__map">
<area shape="rect" id="node2" href="class_m_q___server.html" title="Implements a message&#45;queue&#45;server for prngd. " alt="" coords="5,80,92,107"/><area shape="rect" id="node3" href="class_tcp___server.html" title="Implement a tcp&#45;server for prngd. " alt="" coords="116,80,203,107"/><area shape="rect" id="node4" href="class_udp___server.html" title="Implements a udp&#45;server for prngd. " alt="" coords="227,80,315,107"/><area shape="rect" id="node5" href="class_uds___server.html" title="Implements a Unix&#45;domain&#45;socket server for prngd. " alt="" coords="339,80,427,107"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a08ff85b3d928e0b953b3aee40b4dc9ed"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a08ff85b3d928e0b953b3aee40b4dc9ed">MyThreadClass</a> ()</td></tr>
<tr class="separator:a08ff85b3d928e0b953b3aee40b4dc9ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04fba1006d1a3606208997d539214f8f"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a04fba1006d1a3606208997d539214f8f">~MyThreadClass</a> ()</td></tr>
<tr class="separator:a04fba1006d1a3606208997d539214f8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a61698b55e4b49c3050854bb10ec8ba"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a5a61698b55e4b49c3050854bb10ec8ba">StartWorkerThread</a> ()</td></tr>
<tr class="separator:a5a61698b55e4b49c3050854bb10ec8ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d7edfe08ebb05f0ed293d4623f5b544"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a0d7edfe08ebb05f0ed293d4623f5b544">StartListenerThread</a> (pthread_t parent_th)</td></tr>
<tr class="separator:a0d7edfe08ebb05f0ed293d4623f5b544"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a649497005488e50141baa26434719e69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a649497005488e50141baa26434719e69">WaitForWorkerThreadToExit</a> ()</td></tr>
<tr class="separator:a649497005488e50141baa26434719e69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f39e3150017a1e203654cb6ebbd94fa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a2f39e3150017a1e203654cb6ebbd94fa">WaitForListenerThreadToExit</a> ()</td></tr>
<tr class="separator:a2f39e3150017a1e203654cb6ebbd94fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a4a44c151b5c74a673e8b1d215d876150"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work</a> ()=0</td></tr>
<tr class="separator:a4a44c151b5c74a673e8b1d215d876150"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a569aeac837f34ab7131ee6a62aaa69cb"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a569aeac837f34ab7131ee6a62aaa69cb">thread_listen</a> (pthread_t)=0</td></tr>
<tr class="separator:a569aeac837f34ab7131ee6a62aaa69cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:a7909fe494afbfe99b385dc5bccbfb5ba"><td class="memItemLeft" align="right" valign="top">static void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a7909fe494afbfe99b385dc5bccbfb5ba">thread_workEntryFunc</a> (void *This)</td></tr>
<tr class="separator:a7909fe494afbfe99b385dc5bccbfb5ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dcc6b326ea7768693ed99f884195018"><td class="memItemLeft" align="right" valign="top">static void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a6dcc6b326ea7768693ed99f884195018">thread_listenerEntryFunc</a> (void *This)</td></tr>
<tr class="separator:a6dcc6b326ea7768693ed99f884195018"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:abdf52ce85e803bc3f12767a812e4a9b0"><td class="memItemLeft" align="right" valign="top">pthread_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#abdf52ce85e803bc3f12767a812e4a9b0">_worker</a></td></tr>
<tr class="separator:abdf52ce85e803bc3f12767a812e4a9b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16cebe6e7c1afd0e766a166136e6d909"><td class="memItemLeft" align="right" valign="top">pthread_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a16cebe6e7c1afd0e766a166136e6d909">_listener</a></td></tr>
<tr class="separator:a16cebe6e7c1afd0e766a166136e6d909"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implements Thread-handling for two threads within an object. </p>
<p><a class="el" href="class_my_thread_class.html" title="Implements Thread-handling for two threads within an object. ">MyThreadClass</a> defines two methods <a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work()</a> and thread_listen(prthread_t) which have to be implemented by classes who inherit from <a class="el" href="class_my_thread_class.html" title="Implements Thread-handling for two threads within an object. ">MyThreadClass</a>. The class got two internal variables for two threads. The class is intended to work like this:</p><ul>
<li><a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work()</a> have to do all the connection setup and executing commands if something is received from a client, the function will run in thread _worker.</li>
<li>thread_lisen() got a endless loop, where it waits for receiving data from a client, the cuntion will run in thread _listener.</li>
<li>If thread_listen receives some data (within the thread _listener) it will signal the thread _worker.</li>
<li>The thread _worker will check the signal within the function thread_worker() and do some computation or whatever.</li>
<li>As long as the worker is busy, the listener can receive commands, but they will not be executed.</li>
<li>After finishing a computation, the worker will get ready again and can handler further commands from the listener. </li>
</ul>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a08ff85b3d928e0b953b3aee40b4dc9ed"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">MyThreadClass::MyThreadClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Constructor </p>

</div>
</div>
<a class="anchor" id="a04fba1006d1a3606208997d539214f8f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual MyThreadClass::~MyThreadClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Destructor </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a0d7edfe08ebb05f0ed293d4623f5b544"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int MyThreadClass::StartListenerThread </td>
          <td>(</td>
          <td class="paramtype">pthread_t&#160;</td>
          <td class="paramname"><em>parent_th</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Starts the listen thread, which start executing the <a class="el" href="class_my_thread_class.html#a569aeac837f34ab7131ee6a62aaa69cb">thread_listen()</a> function. </p><dl class="section return"><dt>Returns</dt><dd>True if the thread was successfully started, false if there was an error starting the thread. </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph.png" border="0" usemap="#class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph" alt=""/></div>
<map name="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph" id="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a6dcc6b326ea7768693ed99f884195018" title="MyThreadClass::thread\l_listenerEntryFunc" alt="" coords="248,5,404,47"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph.png" border="0" usemap="#class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph" alt=""/></div>
<map name="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph" id="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph">
<area shape="rect" id="node2" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe" title="MQ_Server::thread_work" alt="" coords="249,5,413,32"/><area shape="rect" id="node3" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470" title="Tcp_Server::thread_work" alt="" coords="249,56,413,83"/><area shape="rect" id="node4" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d" title="Udp_Server::thread_work" alt="" coords="248,107,415,133"/><area shape="rect" id="node5" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d" title="Uds_Server::thread_work" alt="" coords="248,157,415,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a5a61698b55e4b49c3050854bb10ec8ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int MyThreadClass::StartWorkerThread </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Starts the worker thread, which start executing the <a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work()</a> function. </p><dl class="section return"><dt>Returns</dt><dd>True if the thread was successfully started, false if there was an error starting the thread. </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph.png" border="0" usemap="#class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph" alt=""/></div>
<map name="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph" id="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a7909fe494afbfe99b385dc5bccbfb5ba" title="MyThreadClass::thread\l_workEntryFunc" alt="" coords="244,5,400,47"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph.png" border="0" usemap="#class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph" alt=""/></div>
<map name="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph" id="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph">
<area shape="rect" id="node2" href="class_m_q___server.html#a971bda7614a1744103430c003b416b92" title="MQ_Server::MQ_Server" alt="" coords="246,5,405,32"/><area shape="rect" id="node3" href="class_tcp___server.html#ad8fb0128c69d6f3597f86b82bcdcfb7a" title="Tcp_Server::Tcp_Server" alt="" coords="246,56,405,83"/><area shape="rect" id="node4" href="class_udp___server.html#acc9a3e4831a50e3148b117605e00e0db" title="Udp_Server::Udp_Server" alt="" coords="244,107,407,133"/><area shape="rect" id="node5" href="class_uds___server.html#ae3e4d6758dbf5f58f1b67854131dad97" title="Uds_Server::Uds_Server" alt="" coords="244,157,407,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a569aeac837f34ab7131ee6a62aaa69cb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void MyThreadClass::thread_listen </td>
          <td>(</td>
          <td class="paramtype">pthread_t&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This method has to be responsible for listening to incomming data and signaling the worker. </p>

<p>Implemented in <a class="el" href="class_udp___server.html#a4453086a39202385dd56993916e116ca">Udp_Server</a>, <a class="el" href="class_uds___server.html#ac6b140f928c069ab4f50980fe1027f0b">Uds_Server</a>, <a class="el" href="class_tcp___server.html#ab143c623a5dcda41b308c443b81f74dd">Tcp_Server</a>, and <a class="el" href="class_m_q___server.html#a7ae00df3af2308b7751b2de33992560b">MQ_Server</a>.</p>

</div>
</div>
<a class="anchor" id="a6dcc6b326ea7768693ed99f884195018"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void* MyThreadClass::thread_listenerEntryFunc </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>This</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Creates a new listener thread and starts executin thread_listen within it. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph.png" border="0" usemap="#class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph" alt=""/></div>
<map name="class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph" id="class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a0d7edfe08ebb05f0ed293d4623f5b544" title="MyThreadClass::StartListener\lThread" alt="" coords="209,74,404,115"/><area shape="rect" id="node3" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe" title="MQ_Server::thread_work" alt="" coords="453,5,617,32"/><area shape="rect" id="node4" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470" title="Tcp_Server::thread_work" alt="" coords="453,56,617,83"/><area shape="rect" id="node5" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d" title="Udp_Server::thread_work" alt="" coords="452,107,619,133"/><area shape="rect" id="node6" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d" title="Uds_Server::thread_work" alt="" coords="452,157,619,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a4a44c151b5c74a673e8b1d215d876150"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void MyThreadClass::thread_work </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This method has to be responsible for the connection setup and execution tasks like prngd computation. </p>

<p>Implemented in <a class="el" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d">Udp_Server</a>, <a class="el" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d">Uds_Server</a>, <a class="el" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470">Tcp_Server</a>, and <a class="el" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe">MQ_Server</a>.</p>

</div>
</div>
<a class="anchor" id="a7909fe494afbfe99b385dc5bccbfb5ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void* MyThreadClass::thread_workEntryFunc </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>This</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Creates a new worker thread and starts executing thread_work within it. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph.png" border="0" usemap="#class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph" alt=""/></div>
<map name="class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph" id="class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a5a61698b55e4b49c3050854bb10ec8ba" title="MyThreadClass::StartWorker\lThread" alt="" coords="209,74,400,115"/><area shape="rect" id="node3" href="class_m_q___server.html#a971bda7614a1744103430c003b416b92" title="MQ_Server::MQ_Server" alt="" coords="450,5,609,32"/><area shape="rect" id="node4" href="class_tcp___server.html#ad8fb0128c69d6f3597f86b82bcdcfb7a" title="Tcp_Server::Tcp_Server" alt="" coords="450,56,609,83"/><area shape="rect" id="node5" href="class_udp___server.html#acc9a3e4831a50e3148b117605e00e0db" title="Udp_Server::Udp_Server" alt="" coords="448,107,611,133"/><area shape="rect" id="node6" href="class_uds___server.html#ae3e4d6758dbf5f58f1b67854131dad97" title="Uds_Server::Uds_Server" alt="" coords="448,157,611,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a2f39e3150017a1e203654cb6ebbd94fa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MyThreadClass::WaitForListenerThreadToExit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Will not return until the internal listener thread has exited. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph.png" border="0" usemap="#class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph" alt=""/></div>
<map name="class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph" id="class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph">
<area shape="rect" id="node2" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe" title="MQ_Server::thread_work" alt="" coords="267,5,431,32"/><area shape="rect" id="node3" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470" title="Tcp_Server::thread_work" alt="" coords="267,56,431,83"/><area shape="rect" id="node4" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d" title="Udp_Server::thread_work" alt="" coords="265,107,432,133"/><area shape="rect" id="node5" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d" title="Uds_Server::thread_work" alt="" coords="265,157,432,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a649497005488e50141baa26434719e69"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MyThreadClass::WaitForWorkerThreadToExit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Will not return until the internal worker thread has exited. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a16cebe6e7c1afd0e766a166136e6d909"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">pthread_t MyThreadClass::_listener</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>ID of the internal listener thread. </p>

</div>
</div>
<a class="anchor" id="abdf52ce85e803bc3f12767a812e4a9b0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">pthread_t MyThreadClass::_worker</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Id of the internal worker thread. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>H:/prngd_server/inc/<a class="el" href="_my_thread_class_8h_source.html">MyThreadClass.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="class_my_thread_class.html">MyThreadClass</a></li>
    <li class="footer">Generated on Fri Aug 29 2014 14:14:52 for prngd by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.8 </li>
  </ul>
</div>
</body>
</html>
=======
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.8"/>
<title>prngd: MyThreadClass Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">prngd
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.8 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('class_my_thread_class.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Variables</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pri-static-methods">Static Private Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="class_my_thread_class-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">MyThreadClass Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Implements Thread-handling for two threads within an object.  
 <a href="class_my_thread_class.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_my_thread_class_8h_source.html">MyThreadClass.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for MyThreadClass:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class__inherit__graph.png" border="0" usemap="#_my_thread_class_inherit__map" alt="Inheritance graph"/></div>
<map name="_my_thread_class_inherit__map" id="_my_thread_class_inherit__map">
<area shape="rect" id="node2" href="class_m_q___server.html" title="Implements a message&#45;queue&#45;server for prngd. " alt="" coords="5,80,92,107"/><area shape="rect" id="node3" href="class_tcp___server.html" title="Implements a tcp&#45;server for prngd. " alt="" coords="116,80,203,107"/><area shape="rect" id="node4" href="class_udp___server.html" title="Implements a udp&#45;server for prngd. " alt="" coords="227,80,315,107"/><area shape="rect" id="node5" href="class_uds___server.html" title="Implements a Unix&#45;domain&#45;socket server for prngd. " alt="" coords="339,80,427,107"/></map>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a08ff85b3d928e0b953b3aee40b4dc9ed"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a08ff85b3d928e0b953b3aee40b4dc9ed">MyThreadClass</a> ()</td></tr>
<tr class="separator:a08ff85b3d928e0b953b3aee40b4dc9ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04fba1006d1a3606208997d539214f8f"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a04fba1006d1a3606208997d539214f8f">~MyThreadClass</a> ()</td></tr>
<tr class="separator:a04fba1006d1a3606208997d539214f8f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a61698b55e4b49c3050854bb10ec8ba"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a5a61698b55e4b49c3050854bb10ec8ba">StartWorkerThread</a> ()</td></tr>
<tr class="separator:a5a61698b55e4b49c3050854bb10ec8ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0d7edfe08ebb05f0ed293d4623f5b544"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a0d7edfe08ebb05f0ed293d4623f5b544">StartListenerThread</a> (pthread_t parent_th)</td></tr>
<tr class="separator:a0d7edfe08ebb05f0ed293d4623f5b544"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a649497005488e50141baa26434719e69"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a649497005488e50141baa26434719e69">WaitForWorkerThreadToExit</a> ()</td></tr>
<tr class="separator:a649497005488e50141baa26434719e69"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f39e3150017a1e203654cb6ebbd94fa"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a2f39e3150017a1e203654cb6ebbd94fa">WaitForListenerThreadToExit</a> ()</td></tr>
<tr class="separator:a2f39e3150017a1e203654cb6ebbd94fa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a4a44c151b5c74a673e8b1d215d876150"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work</a> ()=0</td></tr>
<tr class="separator:a4a44c151b5c74a673e8b1d215d876150"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a569aeac837f34ab7131ee6a62aaa69cb"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a569aeac837f34ab7131ee6a62aaa69cb">thread_listen</a> (pthread_t)=0</td></tr>
<tr class="separator:a569aeac837f34ab7131ee6a62aaa69cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-static-methods"></a>
Static Private Member Functions</h2></td></tr>
<tr class="memitem:a7909fe494afbfe99b385dc5bccbfb5ba"><td class="memItemLeft" align="right" valign="top">static void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a7909fe494afbfe99b385dc5bccbfb5ba">thread_workEntryFunc</a> (void *This)</td></tr>
<tr class="separator:a7909fe494afbfe99b385dc5bccbfb5ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6dcc6b326ea7768693ed99f884195018"><td class="memItemLeft" align="right" valign="top">static void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a6dcc6b326ea7768693ed99f884195018">thread_listenerEntryFunc</a> (void *This)</td></tr>
<tr class="separator:a6dcc6b326ea7768693ed99f884195018"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:abdf52ce85e803bc3f12767a812e4a9b0"><td class="memItemLeft" align="right" valign="top">pthread_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#abdf52ce85e803bc3f12767a812e4a9b0">_worker</a></td></tr>
<tr class="separator:abdf52ce85e803bc3f12767a812e4a9b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16cebe6e7c1afd0e766a166136e6d909"><td class="memItemLeft" align="right" valign="top">pthread_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_my_thread_class.html#a16cebe6e7c1afd0e766a166136e6d909">_listener</a></td></tr>
<tr class="separator:a16cebe6e7c1afd0e766a166136e6d909"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Implements Thread-handling for two threads within an object. </p>
<p><a class="el" href="class_my_thread_class.html" title="Implements Thread-handling for two threads within an object. ">MyThreadClass</a> defines two methods <a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work()</a> and thread_listen(prthread_t) which have to be implemented by classes who inherit from <a class="el" href="class_my_thread_class.html" title="Implements Thread-handling for two threads within an object. ">MyThreadClass</a>. The class got two internal variables for two threads. The class is intended to work like this:</p><ul>
<li><a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work()</a> have to do all the connection setup and executing commands if something is received from a client, the function will run in thread _worker.</li>
<li>thread_lisen() got a endless loop, where it waits for receiving data from a client, the cuntion will run in thread _listener.</li>
<li>If thread_listen receives some data (within the thread _listener) it will signal the thread _worker.</li>
<li>The thread _worker will check the signal within the function thread_worker() and do some computation or whatever.</li>
<li>As long as the worker is busy, the listener can receive commands, but they will not be executed.</li>
<li>After finishing a computation, the worker will get ready again and can handler further commands from the listener. </li>
</ul>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a08ff85b3d928e0b953b3aee40b4dc9ed"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">MyThreadClass::MyThreadClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Constructor </p>

</div>
</div>
<a class="anchor" id="a04fba1006d1a3606208997d539214f8f"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual MyThreadClass::~MyThreadClass </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Destructor </p>

</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="a0d7edfe08ebb05f0ed293d4623f5b544"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int MyThreadClass::StartListenerThread </td>
          <td>(</td>
          <td class="paramtype">pthread_t&#160;</td>
          <td class="paramname"><em>parent_th</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Starts the listen thread, which start executing the <a class="el" href="class_my_thread_class.html#a569aeac837f34ab7131ee6a62aaa69cb">thread_listen()</a> function. </p><dl class="section return"><dt>Returns</dt><dd>True if the thread was successfully started, false if there was an error starting the thread. </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph.png" border="0" usemap="#class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph" alt=""/></div>
<map name="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph" id="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_cgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a6dcc6b326ea7768693ed99f884195018" title="MyThreadClass::thread\l_listenerEntryFunc" alt="" coords="248,5,404,47"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph.png" border="0" usemap="#class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph" alt=""/></div>
<map name="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph" id="class_my_thread_class_a0d7edfe08ebb05f0ed293d4623f5b544_icgraph">
<area shape="rect" id="node2" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe" title="MQ_Server::thread_work" alt="" coords="249,5,413,32"/><area shape="rect" id="node3" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470" title="Tcp_Server::thread_work" alt="" coords="249,56,413,83"/><area shape="rect" id="node4" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d" title="Udp_Server::thread_work" alt="" coords="248,107,415,133"/><area shape="rect" id="node5" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d" title="Uds_Server::thread_work" alt="" coords="248,157,415,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a5a61698b55e4b49c3050854bb10ec8ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">int MyThreadClass::StartWorkerThread </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Starts the worker thread, which start executing the <a class="el" href="class_my_thread_class.html#a4a44c151b5c74a673e8b1d215d876150">thread_work()</a> function. </p><dl class="section return"><dt>Returns</dt><dd>True if the thread was successfully started, false if there was an error starting the thread. </dd></dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph.png" border="0" usemap="#class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph" alt=""/></div>
<map name="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph" id="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_cgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a7909fe494afbfe99b385dc5bccbfb5ba" title="MyThreadClass::thread\l_workEntryFunc" alt="" coords="244,5,400,47"/></map>
</div>
</p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph.png" border="0" usemap="#class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph" alt=""/></div>
<map name="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph" id="class_my_thread_class_a5a61698b55e4b49c3050854bb10ec8ba_icgraph">
<area shape="rect" id="node2" href="class_m_q___server.html#a971bda7614a1744103430c003b416b92" title="MQ_Server::MQ_Server" alt="" coords="246,5,405,32"/><area shape="rect" id="node3" href="class_tcp___server.html#ad8fb0128c69d6f3597f86b82bcdcfb7a" title="Tcp_Server::Tcp_Server" alt="" coords="246,56,405,83"/><area shape="rect" id="node4" href="class_udp___server.html#acc9a3e4831a50e3148b117605e00e0db" title="Udp_Server::Udp_Server" alt="" coords="244,107,407,133"/><area shape="rect" id="node5" href="class_uds___server.html#ae3e4d6758dbf5f58f1b67854131dad97" title="Uds_Server::Uds_Server" alt="" coords="244,157,407,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a569aeac837f34ab7131ee6a62aaa69cb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void MyThreadClass::thread_listen </td>
          <td>(</td>
          <td class="paramtype">pthread_t&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This method has to be responsible for listening to incomming data and signaling the worker. </p>

<p>Implemented in <a class="el" href="class_udp___server.html#a4453086a39202385dd56993916e116ca">Udp_Server</a>, <a class="el" href="class_uds___server.html#ac6b140f928c069ab4f50980fe1027f0b">Uds_Server</a>, <a class="el" href="class_tcp___server.html#ab143c623a5dcda41b308c443b81f74dd">Tcp_Server</a>, and <a class="el" href="class_m_q___server.html#a7ae00df3af2308b7751b2de33992560b">MQ_Server</a>.</p>

</div>
</div>
<a class="anchor" id="a6dcc6b326ea7768693ed99f884195018"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void* MyThreadClass::thread_listenerEntryFunc </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>This</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Creates a new listener thread and starts executin thread_listen within it. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph.png" border="0" usemap="#class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph" alt=""/></div>
<map name="class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph" id="class_my_thread_class_a6dcc6b326ea7768693ed99f884195018_icgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a0d7edfe08ebb05f0ed293d4623f5b544" title="MyThreadClass::StartListener\lThread" alt="" coords="209,74,404,115"/><area shape="rect" id="node3" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe" title="MQ_Server::thread_work" alt="" coords="453,5,617,32"/><area shape="rect" id="node4" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470" title="Tcp_Server::thread_work" alt="" coords="453,56,617,83"/><area shape="rect" id="node5" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d" title="Udp_Server::thread_work" alt="" coords="452,107,619,133"/><area shape="rect" id="node6" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d" title="Uds_Server::thread_work" alt="" coords="452,157,619,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a4a44c151b5c74a673e8b1d215d876150"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void MyThreadClass::thread_work </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>This method has to be responsible for the connection setup and execution tasks like prngd computation. </p>

<p>Implemented in <a class="el" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d">Udp_Server</a>, <a class="el" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d">Uds_Server</a>, <a class="el" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470">Tcp_Server</a>, and <a class="el" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe">MQ_Server</a>.</p>

</div>
</div>
<a class="anchor" id="a7909fe494afbfe99b385dc5bccbfb5ba"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">static void* MyThreadClass::thread_workEntryFunc </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>This</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Creates a new worker thread and starts executing thread_work within it. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph.png" border="0" usemap="#class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph" alt=""/></div>
<map name="class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph" id="class_my_thread_class_a7909fe494afbfe99b385dc5bccbfb5ba_icgraph">
<area shape="rect" id="node2" href="class_my_thread_class.html#a5a61698b55e4b49c3050854bb10ec8ba" title="MyThreadClass::StartWorker\lThread" alt="" coords="209,74,400,115"/><area shape="rect" id="node3" href="class_m_q___server.html#a971bda7614a1744103430c003b416b92" title="MQ_Server::MQ_Server" alt="" coords="450,5,609,32"/><area shape="rect" id="node4" href="class_tcp___server.html#ad8fb0128c69d6f3597f86b82bcdcfb7a" title="Tcp_Server::Tcp_Server" alt="" coords="450,56,609,83"/><area shape="rect" id="node5" href="class_udp___server.html#acc9a3e4831a50e3148b117605e00e0db" title="Udp_Server::Udp_Server" alt="" coords="448,107,611,133"/><area shape="rect" id="node6" href="class_uds___server.html#ae3e4d6758dbf5f58f1b67854131dad97" title="Uds_Server::Uds_Server" alt="" coords="448,157,611,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a2f39e3150017a1e203654cb6ebbd94fa"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MyThreadClass::WaitForListenerThreadToExit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Will not return until the internal listener thread has exited. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph.png" border="0" usemap="#class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph" alt=""/></div>
<map name="class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph" id="class_my_thread_class_a2f39e3150017a1e203654cb6ebbd94fa_icgraph">
<area shape="rect" id="node2" href="class_m_q___server.html#a1b5ef576c33539eea304bb7d2ddf15fe" title="MQ_Server::thread_work" alt="" coords="267,5,431,32"/><area shape="rect" id="node3" href="class_tcp___server.html#a2edda05badb8d3b7838679aaaa70b470" title="Tcp_Server::thread_work" alt="" coords="267,56,431,83"/><area shape="rect" id="node4" href="class_udp___server.html#a1fb86c8c08d020a4e2262cf557e4b78d" title="Udp_Server::thread_work" alt="" coords="265,107,432,133"/><area shape="rect" id="node5" href="class_uds___server.html#a8b68567d116ebb1db824e3039507331d" title="Uds_Server::thread_work" alt="" coords="265,157,432,184"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a649497005488e50141baa26434719e69"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void MyThreadClass::WaitForWorkerThreadToExit </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Will not return until the internal worker thread has exited. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a class="anchor" id="a16cebe6e7c1afd0e766a166136e6d909"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">pthread_t MyThreadClass::_listener</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>ID of the internal listener thread. </p>

</div>
</div>
<a class="anchor" id="abdf52ce85e803bc3f12767a812e4a9b0"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">pthread_t MyThreadClass::_worker</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Id of the internal worker thread. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>H:/prngd_server/inc/<a class="el" href="_my_thread_class_8h_source.html">MyThreadClass.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="class_my_thread_class.html">MyThreadClass</a></li>
    <li class="footer">Generated on Sun Aug 31 2014 18:01:31 for prngd by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.8 </li>
  </ul>
</div>
</body>
</html>
>>>>>>> .r39
>>>>>>> .r46
